package com.zhijian.warehouse.manage.entity.po;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 影响库存操作记录表
 * @author Auto Generator
 * @date 2024-10-28 10:28:44
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Api(tags = "影响库存操作记录表")
public class StoreOptRecord {
    /**
     * 主键自增id
     */
    @ApiModelProperty("主键自增id")
    private Long id;
    
    /**
     * 产品id
     */
    @ApiModelProperty("产品id")
    private Long productId;
    
    /**
     * 仓库id
     */
    @ApiModelProperty("仓库id")
    private Long warehouseId;
    /**
     * 库位id
     */
    @ApiModelProperty("库位id")
    private Long warehouseLocationId;

    /**
     * 入库/出库/盘点id
     */
    @ApiModelProperty("入库/出库/盘点id")
    @NotNull(message = "入库/出库/盘点id不能为空")
    private Long optId;

    /**
     * 操作类型 1=入库 2=出库 3=盘点
     */
    @ApiModelProperty("操作类型 1=入库 2=出库 3=盘点")
    @NotNull(message = "操作类型 1=入库 2=出库 3=盘点不能为空")
    private Integer optType;

    /**
     * 库存变化量
     */
    @ApiModelProperty("库存变化量 减少 库存为负  增加库存为正")
    private BigDecimal optCount;

    /**
     * 产品数量绝对值
     */
    @ApiModelProperty("产品数量绝对值")
    @NotNull(message = "产品数量绝对值不能为空")
    private BigDecimal count;

    /**
     * 操作结果 -1 减少库存 1=增加库存
     */
    @ApiModelProperty("操作结果 -1 减少库存 1=增加库存")
    @NotNull(message = "操作结果 -1 减少库存 1=增加库存不能为空")
    private Integer type;

    /**
     * 操作来源 1=web 2=app
     */
    @ApiModelProperty("操作来源 1=web 2=app")
    @NotNull(message = "操作来源 1=web 2=app不能为空")
    private Integer optSource;

    /**
     * 单据编码
     */
    @ApiModelProperty("单据编码")
    private String voucherCode;

    /**
     * 单据时间 yyyy-MM-dd HH:mm:ss
     */
    @ApiModelProperty("单据时间 yyyy-MM-dd HH:mm:ss")
    private String voucherTime;

    /**
     * 操作人id
     */
    @ApiModelProperty("操作人id（审核人id）")
    private Long optUserId;

    /**
     * 制单人id
     */
    @ApiModelProperty("制单人id")
    @NotNull(message = "制单人id不能为空")
    private Long crtUserId;

    /**
     * 创建时间
     */
    @ApiModelProperty("创建时间")
    @NotNull(message = "创建时间不能为空")
    private Date createTime;
}
